**REGION Explicación funcionamiento registro de eventos en Infini Analytics
# Bienvenido al flujo de exemplo para la implementación del sistema de monitoreo de eventos de Infini Analytics en Power Automate Desktop.
/# Para todos los registros de eventos (ya sean de tipo START, EVENT, ERROR o END), se precisa de:
- AutomationId:  Identificador único del automatismo en la plataforma.
- Token: Token del cliente en la plataforma
- Execution ID: Id de la ejecución. Por defecto este es el registro datetime del inicio de la ejecución, pero si tu automatismo tiene un identificador única cada vez que se ejecuta, puedes substituir la variable "InfiniAnalyticsExecutionId" con ese valor.
#/
/# Para activar cada uno de los registros debes hacer lo siguiente:
- Start/Event/End: Definir la variable "Event" como "[START/EVENT/END] - [Descripción del evento]" y ejecutar el subflujo "InfiniAnalyticsAPI".
- Error:  Definir la variable "Event" como "E[id erorr] - [Descripción del error] y ejecutar el subflujo "InfiniAnalyticsAPI". Esto se puede hacer en el flujo habitual o dentro de un bloque de error.#/
**ENDREGION
BLOCK 'Excepción de errores para evitar fallos debido a la monitorización con Infini Analytics'
ON BLOCK ERROR

END
    **REGION Limpieza de carácteres no permitidos en JSONs
    Text.SplitText.SplitWithDelimiter Text: Event CustomDelimiter: $'''-''' IsRegEx: False Result=> EventList
    IF EventList.Count < 2 THEN
        SET EventDescriptionInfiniAnalytics TO Event
    ELSE
        Text.Replace Text: EventList[1] TextToFind: $'''\"''' IsRegEx: False IgnoreCase: False ReplaceWith: $'''\'''' ActivateEscapeSequences: True Result=> EventDescriptionInfiniAnalytics
        Text.Replace Text: EventDescriptionInfiniAnalytics TextToFind: $'''\\r\\n''' IsRegEx: True IgnoreCase: False ReplaceWith: $'''%''%''' ActivateEscapeSequences: False Result=> EventDescriptionInfiniAnalytics
        Text.Replace Text: EventDescriptionInfiniAnalytics TextToFind: $'''\\''' IsRegEx: False IgnoreCase: False ReplaceWith: $'''%''%''' ActivateEscapeSequences: False Result=> EventDescriptionInfiniAnalytics
    END
    **ENDREGION
    IF StartsWith(Event, $'''START''', True) THEN
        SET InfiniAnalyticsAutomationId TO $'''idejemplo-76b14220-32c6-4444-abdc-5204ee05da9c'''
        SET InfiniAnalyticsToken TO $'''tokenejemplo-El5fxatsTWHrwODL34hJ9T18tGgdh1kBPKKwqdE1TqsSZ7GFa5AP'''
        DateTime.GetCurrentDateTime.Local DateTimeFormat: DateTime.DateTimeFormat.DateAndTime CurrentDateTime=> InfiniAnalyticsExecutionId
        Web.InvokeWebService.InvokeWebServicePost Url: $'''https://api.analytics.infini.es/v1/register/''' Accept: $'''application/json''' ContentType: $'''application/json''' CustomHeaders: $'''token: %InfiniAnalyticsToken%''' RequestBody: $'''{
    \"automation_id\":\"%InfiniAnalyticsAutomationId%\",
    \"execution_id\":\"%InfiniAnalyticsExecutionId%\",
    \"event\":\"START\",
    \"description\":\"%EventDescriptionInfiniAnalytics%\",
    \"error_id\":\"\",
    \"error_description\":\"\"
}''' ConnectionTimeout: 30 FollowRedirection: True ClearCookies: False FailOnErrorStatus: False EncodeRequestBody: False UserAgent: $'''Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.21) Gecko/20100312 Firefox/3.6''' Encoding: Web.Encoding.AutoDetect AcceptUntrustedCertificates: False TrimRequestBody: True Response=> InfiniAnalyticsWebServiceResponse StatusCode=> InfiniAnalyticsStatusCode
    ELSE IF StartsWith(Event, $'''END''', True) THEN
        Text.SplitText.SplitWithDelimiter Text: Event CustomDelimiter: $'''-''' IsRegEx: False Result=> EventList
        Web.InvokeWebService.InvokeWebServicePost Url: $'''https://api.analytics.infini.es/v1/register/''' Accept: $'''application/json''' ContentType: $'''application/json''' CustomHeaders: $'''token: %InfiniAnalyticsToken%''' RequestBody: $'''{
    \"automation_id\":\"%InfiniAnalyticsAutomationId%\",
    \"execution_id\":\"%InfiniAnalyticsExecutionId%\",
    \"event\":\"END\",
    \"description\":\"%EventDescriptionInfiniAnalytics%\"
}''' ConnectionTimeout: 30 FollowRedirection: True ClearCookies: False FailOnErrorStatus: False EncodeRequestBody: False UserAgent: $'''Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.21) Gecko/20100312 Firefox/3.6''' Encoding: Web.Encoding.AutoDetect AcceptUntrustedCertificates: False TrimRequestBody: True Response=> InfiniAnalyticsWebServiceResponse StatusCode=> InfiniAnalyticsStatusCode
    ELSE IF StartsWith(Event, $'''EVENT''', False) THEN
        Web.InvokeWebService.InvokeWebServicePost Url: $'''https://api.analytics.infini.es/v1/register/''' Accept: $'''application/json''' ContentType: $'''application/json''' CustomHeaders: $'''token: %InfiniAnalyticsToken%''' RequestBody: $'''{
    \"automation_id\":\"%InfiniAnalyticsAutomationId%\",
    \"execution_id\":\"%InfiniAnalyticsExecutionId%\",
    \"event\":\"EVENT\",
    \"description\":\"%EventDescriptionInfiniAnalytics%\"
}''' ConnectionTimeout: 30 FollowRedirection: True ClearCookies: False FailOnErrorStatus: False EncodeRequestBody: False UserAgent: $'''Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.21) Gecko/20100312 Firefox/3.6''' Encoding: Web.Encoding.AutoDetect AcceptUntrustedCertificates: False TrimRequestBody: True Response=> InfiniAnalyticsWebServiceResponse StatusCode=> InfiniAnalyticsStatusCode
    ELSE IF StartsWith(Event, $'''E''', True) THEN
        ERROR => LastError
        SET LastError TO $'''%LastError.SubflowName%%LastError.AdditionalInfo%%LastError.Location%%LastError.Message.Trimmed%'''
        Text.Replace Text: LastError TextToFind: $'''\"''' IsRegEx: False IgnoreCase: False ReplaceWith: $'''\'''' ActivateEscapeSequences: False Result=> LastError
        Text.Replace Text: LastError TextToFind: $'''\\r\\n''' IsRegEx: True IgnoreCase: False ReplaceWith: $'''%''%''' ActivateEscapeSequences: False Result=> LastError
        Text.Replace Text: LastError TextToFind: $'''\\''' IsRegEx: False IgnoreCase: False ReplaceWith: $'''%''%''' ActivateEscapeSequences: False Result=> LastError
        Web.InvokeWebService.InvokeWebServicePost Url: $'''https://api.analytics.infini.es/v1/register/''' Accept: $'''application/json''' ContentType: $'''application/json''' CustomHeaders: $'''token: %InfiniAnalyticsToken%''' RequestBody: $'''{
    \"automation_id\":\"%InfiniAnalyticsAutomationId%\",
    \"execution_id\":\"%InfiniAnalyticsExecutionId%\",
    \"event\":\"ERROR\",
    \"description\":\"%EventDescriptionInfiniAnalytics%\",
    \"error_id\":\"%EventList[0]%\",
    \"error_description\":\"%LastError.Trimmed%\"
}''' ConnectionTimeout: 30 FollowRedirection: True ClearCookies: False FailOnErrorStatus: False EncodeRequestBody: False UserAgent: $'''Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.21) Gecko/20100312 Firefox/3.6''' Encoding: Web.Encoding.AutoDetect AcceptUntrustedCertificates: False TrimRequestBody: True Response=> InfiniAnalyticsWebServiceResponse StatusCode=> InfiniAnalyticsStatusCode
    END
    SET Event TO $'''NULL'''
END